<!DOCTYPE html>

<html>

	<head>
		<meta charset="utf-8">
		<title> 命令模拟器使用说明文档 </title>
        <link href="../css/wendang.css" rel="stylesheet" type="text/css" media="all" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
	</head>
        
    <body style="width: 80%; margin: 0px auto;">
        <div class="menu">
            <div id="menu_1">
                <div class="menu_1">
                    <div onclick="display_thing('main_1');">软件使用</div>
                    <div onclick="display_thing('main_2');">本地数据</div>
                    <div onclick="display_thing('main_3');">文字输入</div>
                    <div onclick="display_thing('main_4');">用户登录</div>
                </div>
                <div class="menu_1">
                    <div onclick="display_thing('main_5');">右键菜单</div>
                    <div onclick="display_thing('main_6');">软件更新</div>
                </div>
            </div>
            <div style="text-align: center; background-color: rgb(62, 94, 7); color: white; display: flex;">
                <div onclick="close_menu()" style="padding: 3px 0px; width: 50%; border-right: 3px solid white;" id="button_1">点击收入菜单</div>
                <div onclick="website1()" style="padding: 3px 0px; width: 50%;">点击返回主页</div>
            </div>
        </div>

        <div id="top_blank" style="height: 80px;"></div>

        <div id="main_text" style="width: 95%; margin: 0px auto;">

            <div id="main_1" >
                <h1 style="text-align: center;">软件使用</h1>
                <p>
                    &emsp;&emsp;本调试程序需要与 <samp class="red_text">MT管理器，浏览器</samp> 组合使用才可以完整体验所有功能。
                    如果你有其他文本编辑器可以替代MT管理器，可以直接跳过本段内容。如果你还没有下载MT管理器，可以点击链接进行下载。
                    MT管理器下载：<a href="https://mt2.cn/download/">点击下载</a>
                </p>
                <p>
                    &emsp;&emsp;本调试程序只涉及<samp class="red_text">点击和输入文字操作</samp>。
                    如果<samp class="red_text">安卓用户</samp>执意多次执行<samp class="red_text">返回操作</samp>，
                    将会直接关闭此调试程序。注意：这不是刻意的设计，而是Pydroid 3在程序运行下的自身设定。
                </p>

                <h1 style="text-align: center;">界面操作栏</h1>
                <p>&emsp;&emsp;进入调试程序主界面，最下方的界面操作栏，可以在不同界面中分别切换，菜单按钮除外。</p>
                <div style="text-align:center"><img src="../picture/tutorial/menu1.jpg" alt="" width="250" height="40"></div>
                <p>&emsp;&emsp;图1是窗口切换，你可以在游戏界面、拓展包选择界面、拓展包窗口界面、设置界面中分别切换。可以花一些时间对这几个界面进行熟悉。</p>
                <div style="text-align:center"><img src="../picture/tutorial/menu2.jpg" alt="" width="80" height="220"></div>
                <p>
                    &emsp;&emsp;图2是为文字输入而单独设计的功能按钮，适用于本程序所有的文本输入框。设计这些按钮的原因是因为安卓用户的Pydroid
                    3无法直接使用输入法中的这些功能，所以需要额外设计的按钮进行支持。
                </p>

                <h1 style="text-align: center;">拓展包</h1>
                <div style="text-align:center"><img src="../picture/tutorial/expand1.jpg" alt="" width="250" height="270"></div>
    
                <p>
                    &emsp;&emsp;拓展包的平台都是第三方拓展包。第三方拓展包为命令模拟器附加的服务，使用第三方拓展包需要注册命令模拟器的账户，
                    并在官网选购拓展包，拓展包将会根据未来用户的反馈进行更新。第三方拓展包并不是只由命令模拟器作者进行开发，
                    未来可能有拓展包开发者对自己的拓展包进行定价，请各位用户尊重拓展包开发者的著作权。
                </p>
                <p>
                    &emsp;&emsp;第三方拓展包有启动和重启两个开启方式。如果点击启动，则将恢复用户上一次对该拓展包内容的修改，
                    如果点击重启，则销毁上一次的修改重新启动拓展包。
                </p>
                <p>
                    &emsp;&emsp;注意：<samp class="red_text">由于拓展包是贴近python代码进行开发，请不要安装未知的第三方拓展包。</samp>
                    安装第三方拓展包造成的设备损害，开发者将不对此进行负责。
                </p>
            </div>

            <div id="main_2" style="display: none;" >
                <h1 style="text-align: center;">本地文件存储</h1>
                <p>&emsp;&emsp;命令模拟器的世界储存和源代码位于同一目录位置。</p>
                <p>&emsp;&emsp;Windows的本地文件储存在用户自己选择的文件夹目录。</p>
                <p style="overflow-wrap:break-word">
                    &emsp;&emsp;Android的本地文件需要用户需要在MT管理器中，点击最上方路径栏，跳转至/storage/emulated/0/Android/data/ru.iiec.pydroid3(
                    <a href="#" onclick="clipboard.copy('/storage/emulated/0/Android/data/ru.iiec.pydroid3')">点击复制</a>)
                    如果是Android 13系统则需要按照MT管理器<samp class="red_text">授权</samp>或<samp class="red_text">下载Shuziku</samp>。
                    进入该目录，在此目录下有files文件夹，命令模拟器本地文件就储存于此。
                </p>
                <p>&emsp;&emsp;用户可以在MT管理器中点击右上角菜单，对此目录<samp class="red_text">设置首页</samp>或<samp class="red_text">添加书签</samp>以方便下一次寻找该目录。</p>

                <h1 style="text-align: center;">本地网站</h1>
                <p>
                    &emsp;&emsp;命令模拟器在启动时会自动搭建一个本地服务器，这个服务器将服务于命令模拟器中的重要功能，例如命令的语法错误反馈信息。
                    并且你所阅读的帮助文档服务也由该本地服务器提供。
                </p>
                <p>&emsp;&emsp;命令模拟器的本地服务器地址为: <samp class="red_text">localhost:32323</samp>。</p>
                <p>
                    &emsp;&emsp;注意：<samp class="red_text">安卓用户使用的Pydroid 3在切至后台会导致本程序暂停运行，
                    本地服务器也会因此暂停运行</samp>。解决方法：将前台进程切换Pydroid 3后，返回浏览器即可正常工作。
                </p>
            </div>

            <div id="main_3" style="display: none;" >
                <h1 style="text-align: center;">文字输入和操作</h1>
                <p>&emsp;&emsp;命令模拟器使用tkinter UI库进行搭建，因此很多文字操作功能无法直接在<samp class="red_text">安卓和Windows</samp>中同时进行兼容。</p>
                <p>&emsp;&emsp;命令模拟器中的撤回和恢复操作需要<samp class="red_text">界面操作栏</samp>中的菜单按钮进行撤回和恢复。</p>
                <p>
                    &emsp;&emsp;在安卓平台，命令模拟器中的输入框同样也不支持<samp class="red_text">输入法中</samp>提供的全选、复制、剪切、粘贴功能，
                    需要依靠快捷操作菜单中的按钮进行支持。
                    部分安卓用户由于输入法差距，换行也无法使用，快捷操作菜单中的按钮也支持换行。
                </p>

                <h1 style="text-align: center;">文本操作菜单</h1>
                <div style="text-align:center"><img src="../picture/tutorial/select_menu1.jpg" alt=""></div>
                <p>如果用户在输入框中，在输入框中进行<samp class="red_text">缓慢的拖动操作</samp>，即可选中输入框内的文字。这时会显示文本操作菜单1，如上图所示。
                点击对应菜单即可执行对应的操作。</p>
                <div style="text-align:center"><img src="../picture/tutorial/select_menu2.jpg" alt=""></div>
                <p>如果用户在输入框中，对同一位置进行<samp class="red_text">多次缓慢的点击</samp>，即可显示文本操作菜单2，如上图所示。
                点击对应菜单即可执行对应的操作。</p>
            </div>

            <div id="main_4" style="display: none;" >
                <h1 style="text-align: center;">用户登录</h1>
                <p>
                    &emsp;&emsp;命令模拟器的用户登录主要是为拓展包而服务的。拓展包的下载需要在服务器中验证用户是否拥有拓展包，
                    如果用户想拥有拓展包，需要在<a href="https://commandsimulator.great-site.net/login.php">命令模拟器官网</a>中购入。
                    如果没有账号，也可以在官网进行注册。
                </p>
                <p>&emsp;&emsp;命令模拟器的账户的通行码有效期为两个月，届时需要进入网站重新获取通行码。</p>
            </div>

            <div id="main_5" style="display: none;" >
                <h1 style="text-align: center;">右键菜单</h1>
                <p>&emsp;&emsp;命令模拟器支持右键菜单，现在为止右键菜单支持MC所有字符的复制，以及复制MC内各种项目的ID。</p>
                <p>&emsp;&emsp;Windows用户使用鼠标右键即可唤出右键菜单，安卓用户需要长按命令模拟器界面2秒，才可以唤出右键菜单。</p>
                <h1 style="text-align: center;">批量复制字符</h1>
                <p>
                    &emsp;&emsp;用户可通过<a href="https://missing254.github.io/cs-tool/tool/Unicode/page_1.html">官网网站</a>查询需要的文字对应的Unicode编码。
                </p>
                <p>&emsp;&emsp;在输入框输入的合法Unicode编码可添加收藏，并供下一次快速寻找与复制。</p>
                <h1 style="text-align: center;">查询游戏内ID</h1>
                <p>
                    &emsp;&emsp;在搜索框中输入关键词即可搜索各类ID，现支持物品，方块，实体，群系，伤害，药效，附魔，槽位，迷雾，规则，结构，掉落，声音，配方
                </p>
                <h1 style="text-align: center;">复制文件命令</h1>
                <p>
                    &emsp;&emsp;在main.py所在的目录下，文件夹functionality内有一个名为command的文件夹，该文件夹支持读取.txt .mcfunction文件和子文件夹的文件。
                </p>
                <p>&emsp;&emsp;软件会自动去除空行，并给用户提供小窗口下的命令复制功能。通常适用于将文件命令转移到命令方块内。</p>
                <p>&emsp;&emsp;注意：如果你使用title命令显示的信息里有多行显示，请注意补充手动补充内容！！！！</p>
            </div>

            <div id="main_6" style="display: none;" >
                <h1 style="text-align: center;">软件更新</h1>
                <p>&emsp;&emsp;命令模拟器在服务器查询到最新版本时会提醒用户是否需要更新。</p>
                <p>&emsp;&emsp;安卓用户需要在main.py所在的目录，寻找update.py文件，使用Pydroid 3打开文件后，运行文件即可更新。</p>
                <p>&emsp;&emsp;Windows用户在根目录需要寻找 Windows更新.bat 文件，双击运行后即可更新。如果用户误删除了程序的重要文件，也可以通过更新来进行恢复。</p>
            </div>
        </div>

        <div style="height: 30px;"></div>

    </body>

    <script>
        var count_1 = 0 ;
        function close_menu(){
            if (count_1 == 0){
                document.getElementById('menu_1').style.display = "none";
                document.getElementById('button_1').innerHTML = "点击展开菜单";
                document.getElementById('top_blank').style.height = "20px";
            }
            else{
                document.getElementById('menu_1').style.display = "";
                document.getElementById('button_1').innerHTML = "点击收入菜单"
                document.getElementById('top_blank').style.height = (document.getElementById('menu_1').clientHeight + 20).toString() + "px"
            }
            count_1 ++; count_1 %= 2;
        }
        function website1(){window.location.href='http://localhost:32323';}
    </script>

    <script>
        if (window.innerWidth > 700) {document.getElementById('main_text').style.width = "700px";}  
        function display_thing(id1){
            array1 = ['main_1','main_2','main_3','main_4','main_5','main_6','main_7'];
            document.body.scrollTop = 0; 
            document.documentElement.scrollTop = 0;
            for (let index = 0; index < array1.length; index++) {
                if (id1 == array1[index]) document.getElementById(array1[index]).style.display = "";
                else document.getElementById(array1[index]).style.display = "none";
            }
        }

        var clipboard = function (window, document, navigator) {
          var textArea, copy;
 
          function isOS() {
              return navigator.userAgent.match(/ipad|iphone/i);
          }
 
          function createTextArea(text) {
              textArea = document.createElement('textArea');
              textArea.value = text;
              document.body.appendChild(textArea);
          }
 
          function selectText() {
              var range, selection;
 
              if (isOS()) {
                  range = document.createRange();
                  range.selectNodeContents(textArea);
                  selection = window.getSelection();
                  selection.removeAllRanges();
                  selection.addRange(range);
                  textArea.setSelectionRange(0, 999999);
              } else {
                  textArea.select();
              }
          }
 
          function copyToClipboard() {
              document.execCommand('copy');
              document.body.removeChild(textArea);
          }
 
          copy = function copy(text) {
              createTextArea(text);
              selectText();
              copyToClipboard();
          };
 
          return {
              copy: copy
          };
        }(window, document, navigator);

    </script>

</html>





